@@ -154,17 +154,23 @@ module Agents |
||
154 | 154 |
error '"css" or "xpath" is required for HTML or XML extraction' |
155 | 155 |
return |
156 | 156 |
end |
157 |
- unless Nokogiri::XML::NodeSet === nodes |
|
157 |
+ case nodes |
|
158 |
+ when Nokogiri::XML::NodeSet |
|
159 |
+ result = nodes.map { |node| |
|
160 |
+ case value = node.xpath(extraction_details['value']) |
|
161 |
+ when Float |
|
162 |
+ # Node#xpath() returns any numeric value as float; |
|
163 |
+ # convert it to integer as appropriate. |
|
164 |
+ value = value.to_i if value.to_i == value |
|
165 |
+ when Nokogiri::XML::NodeSet |
|
166 |
+ value = value.first |
|
167 |
+ end |
|
168 |
+ value.to_s |
|
169 |
+ } |
|
170 |
+ else |
|
158 | 171 |
error "The result of HTML/XML extraction was not a NodeSet" |
159 | 172 |
return |
160 | 173 |
end |
161 |
- result = nodes.map { |node| |
|
162 |
- value, = node.xpath(extraction_details['value']) |
|
163 |
- if value.is_a?(Float) && value.to_i == value |
|
164 |
- value = value.to_i |
|
165 |
- end |
|
166 |
- value.to_s |
|
167 |
- } |
|
168 | 174 |
log "Extracting #{extraction_type} at #{xpath || css}: #{result}" |
169 | 175 |
end |
170 | 176 |
output[name] = result |